#include "stdafx.h"
#include "base_image.h"
#include "..\clientinterfaces.h"
#include "iltdrawprim.h"
base_image::base_image()
{

}

base_image::~base_image()
{

}

void base_image::render()
{
	g_pLTCDrawPrim->SetTexture(get_tex());
	g_pLTCDrawPrim->DrawPrim(&m_poly);

}

void base_image::update()
{
	if (get_change())
	{
		zuo_image::g_set_xywh(m_base_poly,get_x()*get_compote_width()+get_compote_x(),
			get_y()*get_compote_height()+get_compote_y(),
			get_width()*get_scale_x()*get_compote_width(),get_height()*get_scale_y()*get_compote_height());
		zuo_image::g_set_uv(m_poly,get_umin(),get_vmin(),get_umax(),get_vmax());
		zuo_image::g_set_color(m_poly,get_alpha(),get_red(),get_green(),get_blue());
		//do rotate;
		for (int i=0;i<4;++i)
		{
			float rx,ry;
			rx =m_base_poly.verts[i].y*sin(get_angle())+m_base_poly.verts[i].x*cos(get_angle());
			ry=m_base_poly.verts[i].y*cos(get_angle())+(-m_base_poly.verts[i].x*sin(get_angle()));
			m_poly.verts[i].x=rx+get_x()*get_compote_width()+get_compote_x();
			m_poly.verts[i].y=get_y()*get_compote_height()+get_compote_y()-ry;
		}

		set_change(false);
	}
   
}

void base_image::set_uv( float _umin,float _umax,float _vmin,float _vmax )
{
	imp_UIimage::set_uv(_umin,_umax,_vmin,_vmax);
	set_change(true);

}


void base_image::set_position( float _x/*=0.0f*/,float _y/*=0.0f*/ )
{
	imp_UIimage::set_position(_x,_y);
	set_change(true);
}

void base_image::set_size( float _width/*=0.2f*/,float _height/*=0.2f*/ )
{
	imp_UIimage::set_size(_width,_height);
	set_change(true);

}

void base_image::scale( float _ws/*=1.0f*/,float _hs/*=1.0f*/ )
{
	imp_UIimage::scale(_ws,_hs);
	set_change(true);
}

void base_image::set_angle( float _an/*=0.0f*/ )
{
	imp_UIimage::set_angle(_an);
	set_change(true);

}

void base_image::set_color( uint8 _a/*=255*/,uint8 _r/*=255*/,uint8 _g/*=255*/,uint8 _b/*=255*/ )
{
	imp_UIimage::set_color(_a,_r,_g,_b);
	set_change(true);
}

void base_image::set_window_size( int _w,int _h )
{
	//imp_UIimage::set_window_size(_w,_h);
	set_change(true);
}